package com.itheima.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.entity.QueryPageBean;
import com.itheima.mapper.CheckGroupMapper;
import com.itheima.mapper.CheckItemMapper;
import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckGroupService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Service
@Transactional
public class CheckGroupServiceImpl implements CheckGroupService {

    //注入Mapper接口对象
    @Autowired
    private CheckGroupMapper checkGroupMapper;

    @Autowired
    private CheckItemMapper checkItemMapper;

    @Override
    public void addCheckGroup(CheckGroup checkGroup, Integer[] checkItemIds) {
        //调用mapper中的添加检查组的方法  添加完后 checkGroup的为数据库的主键id值
        checkGroupMapper.addCheckGroup(checkGroup);


        //获取主键id值
        Integer checkGroupId = checkGroup.getId();
        System.out.println("主键id为:"+checkGroupId);

        //遍历检查项的所有id值
      /*  for (Integer checkItemId : checkItemIds) {
            //调用添加 检查项表和检查组的 中间表(t_checkgroup_checkitem) 数据 的方法
            checkGroupMapper.addCheckGroupIdAndCheckItemId(checkGroupId,checkItemIds);
        }*/
        checkGroupMapper.addCheckGroupIdAndCheckItemId(checkGroupId,checkItemIds);
    }

    @Override
    public Map findPageCheckGroup(QueryPageBean queryPageBean) {
        //使用分页插件  注入页码和页面显示数值
        PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());

        //查询分页数据
        List<CheckGroup> checkGroupList = checkGroupMapper.findPageCheckGroup(queryPageBean.getQueryString());

        //将查询到的数据集合给到PageInfo对象
        PageInfo<CheckGroup> pageInfo = new PageInfo<>(checkGroupList);
        //创建一个Map对象
        Map map=new HashMap();
        map.put("checkGroupList", pageInfo.getList());
        map.put("total",pageInfo.getTotal());

        return map;
    }

    @Override
    public Map echoCheckGroup(Integer id) {
        //查询所有检查项
        List<CheckItem> checkItemList = checkItemMapper.findAllCheckItem();

        //查询 检查项勾选数组
        Integer[] checkItemIds=checkGroupMapper.findCheckItem(id);

        Map map=new HashMap();
        map.put("checkItemList",checkItemList);
        map.put("checkItemIds",checkItemIds);
        return map;
    }

    @Override
    public void updateCheckGroup(CheckGroup checkGroup, Integer[] checkItemIds) {
        //获取当前检查组的id值
        Integer checkGroupId = checkGroup.getId();

        //修改检查组表普通项信息
        checkGroupMapper.updateCheckGroup(checkGroup);

        //注意: 修改中间表信息之前要先移除之前的中间表信息,再添加新的中间表信息
        //移除
        checkGroupMapper.removeCheckGroupAndCheckItemByCheckGroupId(checkGroupId);
        //添加
       /* for (Integer checkItemId : checkItemIds) {
            checkGroupMapper.addCheckGroupIdAndCheckItemId(id,checkItemIds);
        }*/
        checkGroupMapper.addCheckGroupIdAndCheckItemId(checkGroupId,checkItemIds);
    }

    @Override
    public void deleteCheckGroup(Integer id) {
        checkGroupMapper.deleteCheckGroup(id);
    }

    @Override
    public List<CheckGroup> findAllCheckGroup() {
        return checkGroupMapper.findAllCheckGroup();
    }
}
